Three-dimensional (3D) computer graphics systems, which can render objects from a 3D world (real or imaginary) onto a two-dimensional (2D) display screen, are currently used in a wide variety of applications. For example, 3D computer graphics can be used for real-time interactive applications, such as computer games, virtual reality, scientific research, etc., as well as off-line applications, such as the creation of high resolution movies, graphic art, etc. Because of a growing interest in 3D computer graphics, this field of technology has been developed and improved significantly over the past several years.
In order to render 3D objects onto a 2D display, objects to be displayed are defined in a 3D “world space” using space coordinates and color characteristics. The coordinates of points on the surface of an object are determined and the points, or vertices, are used to create a wireframe connecting the points to define the general shape of the object. In some cases, these objects may have “bones” and “joints” that can pivot, rotate, etc., or may have characteristics allowing the objects to bend, compress, deform, etc. A graphics processing system can gather the vertices of the wireframe of the object to create triangles or polygons. For instance, an object having a simple structure, such as a wall or a side of a building, may simply be defined by four planar vertices forming a rectangular polygon or two triangles. A more complex object, such as a tree or sphere, may require hundreds of vertices, forming hundreds of triangles, to define the object.
In addition to defining vertices of an object, the graphics processor may also perform other tasks such as determining how the 3D objects will appear on a 2D screen. This process includes determining, from a single “camera view” pointed in a particular direction, a window frame view of this 3D world. From this view, the graphics processor can clip portions of an object that may be outside the frame, hidden by other objects, or facing away from the “camera” and hidden by other portions of the object. Also, the graphics processor can determine the color of the vertices of the triangles or polygons and make certain adjustments based on lighting effects, reflectivity characteristics, transparency characteristics, etc. Using texture mapping, textures or colors of a flat picture can be applied onto the surface of the 3D objects as if putting skin on the object. In some cases, the color values of the pixels located between two vertices, or on the face of a polygon formed by three or more vertices, can be interpolated if the color values of the vertices are known. Other graphics processing techniques can be used to render these objects onto a flat screen.
As is known, the graphics processors include core data processing components referred to as “shaders”. Software developers or artists can utilize these shaders to create images and control frame-by-frame video as desired. For example, vertex shaders, geometry shaders, and pixel shaders are commonly included in graphics processors to perform many of the tasks mentioned above. Also, some tasks are performed by fixed function units, such as rasterizers, pixel interpolators, triangle setup units, etc. By creating a graphics processor having these individual components, a manufacturer can provide a basic tool for creating realistic 3D images or video.
Graphics processors utilize cache in many of the stages of processing. The output of one shader device is typically transmitted to one cache device, which then feeds the data values to the next shader device. The next shader device outputs its results to another cache device, and so on. When a particular scene or object requires a greater use of one certain shader device over another, the associated cache of the shader device is likewise utilized to a greater extent. Since different software developers or artists may have different needs, depending on their particular application, it can be difficult to determine up front how much of each type of cache memory may be needed to store data processed by the shaders of the processing core. Thus, a need exists in the art of graphics processors to address the issue regarding the proportion of different types and sizes of cache devices. It would therefore be desirable to provide a graphics processing system capable of overcoming these and other inadequacies and deficiencies in the 3D graphics technology.